package com.weicoder.shop.po

import java.io.Serializable
import java.util.List
import javax.persistence.Entity
import javax.persistence.JoinColumn
import javax.persistence.JoinTable
import javax.persistence.ManyToMany
import org.hibernate.annotations.DynamicInsert
import org.hibernate.annotations.DynamicUpdate
import org.hibernate.search.annotations.Field
import org.hibernate.search.annotations.Indexed
import org.springframework.context.annotation.Scope
import org.springframework.stereotype.Component
import org.springframework.beans.factory.config.ConfigurableBeanFactory
import com.weicoder.base.annotation.Cache
import com.weicoder.base.entity.EntityFiles
import com.weicoder.common.constants.ArrayConstants
import com.weicoder.common.lang.Lists
import com.weicoder.common.util.EmptyUtil
import com.weicoder.site.entity.EntityPage
import com.weicoder.site.entity.base.BaseEntityIdTime
import scala.beans.BeanProperty
import java.lang.Boolean
import java.math.BigDecimal

/**
 * 物品
 * @author WD
 * @since JDK7
 * @version 1._ 2_1_-12-13
 */
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Entity
@Indexed
@DynamicInsert
@DynamicUpdate
@Cache
class Goods extends BaseEntityIdTime with EntityFiles {
  // 名称
  @Field
  @BeanProperty
  var name: String = _
  // 编号
  @BeanProperty
  var sn: String = _
  // 价格
  @BeanProperty
  var price: BigDecimal = _
  // 成本价
  @BeanProperty
  var cost: BigDecimal = _
  // 市场价
  @BeanProperty
  var market: BigDecimal = _
  // 库存
  @BeanProperty
  var store: Integer = _
  // 重量
  @BeanProperty
  var weight: Integer = _
  // 上架
  @BeanProperty
  var markeTable: Boolean = _
  // 类别
  @BeanProperty
  var sortId: Integer = _
  // 品牌ID
  @BeanProperty
  var brandId: Integer = _
  // 类型
  @BeanProperty
  var typeId: Integer = _
  // 简介
  @BeanProperty
  var brief: String = _
  // 描述
  @BeanProperty
  var detail: String = _
  // 精品
  @BeanProperty
  var best: Boolean = _
  // 新品
  @BeanProperty
  var newIn: Boolean = _
  // 热销
  @BeanProperty
  var hot: Boolean = _
  // 是否启用规格
  @BeanProperty
  var specificationEnabled: Boolean = _
  //	// 页面信息
  //	@Type(type = "com.weicoder.base.dao.hibernate.type.JsonType")
  //	EntityPage				page
  //	// 商品图片
  //	@Type(type = "com.weicoder.base.dao.hibernate.type.JsonType")
  //	List<GoodsImage>		images
  //	// 商品属性
  //	@Type(type = "com.weicoder.base.dao.hibernate.type.JsonType")
  //	List<GoodsAttribute>	attributes
  //	// 商品参数
  //	@Type(type = "com.weicoder.base.dao.hibernate.type.JsonType")
  //	List<GoodsParam>		params
  //	// 商品规格
  //	@ManyToMany
  //	@JoinTable(name = "goods_specification", joinColumns = @JoinColumn(name = "goods_id"), inverseJoinColumns = @JoinColumn(name = "sid"))
  //	List<Specification>		specifications

  /**
   * 获得路径数组
   */
  override def getPaths(): Array[String] = {
    //		if (!EmptyUtil.isEmpty(images)) {
    //			// 获得值长度
    //			int size = images.size()
    //			// 声明数组
    //			String[] paths = new String[size]
    //			// 循环赋值
    //			for (int i = _; i < size; i++) {
    //				paths[i] = images.get(i).getPath()
    //			}
    //			// 返回数组
    //			return paths
    //		} else {
    //			return ArrayConstants.STRING_EMPTY
    //		}
    ArrayConstants.STRING_EMPTY
  }

  /**
   * 设置路径数组
   */
  override def setPaths(paths: Array[String]) {
    //		// 设置路径
    //		for (int i = _; i < paths.length; i++) {
    //			images.get(i).setPath(paths[i])
    //		}
  }

  //	/**
  //	 * 商品参数
  //	 * @author WD
  //	 * @since JDK7
  //	 * @version 1._ 2_12-_3-28
  //	 */
  //	static  class GoodsParam implements Serializable {
  //		// 值
  //		String				value
  //		// 名称
  //		String				name
  //	}
  //
  //	/**
  //	 * 商品属性
  //	 * @author WD
  //	 * @since JDK7
  //	 * @version 1._ 2_12-_3-28
  //	 */
  //	static class GoodsAttribute implements Serializable {
  //		// 值
  //		String				value
  //		// 名称
  //		String				name
  //	}
  //
  //	/**
  //	 * 商品图片
  //	 * @author WD
  //	 * @since JDK7
  //	 * @version 1._ 2_12-_4-19
  //	 */
  //	static class GoodsImage implements Serializable {
  //		// 图片路径
  //		String				path
  //		// 描述
  //		String				description
  //	}
}
